import vue from '@vitejs/plugin-vue'
import createAutoImport from './autoImport/index.js'
import createSvgIcon from './svg.js'
import { visualizer } from "rollup-plugin-visualizer"
// import zip from 'vite-plugin-compression'

export default function createVitePlugins(viteEnv, isBuild = false) {
    const vitePlugins = []
    vitePlugins.push(vue())
    // 自动导入
    vitePlugins.push(...(createAutoImport()))
    // svg 图标
    vitePlugins.push(createSvgIcon(isBuild))

    // 开发环境下，自动生成字典数据映射文件
    if (!isBuild) import('./autoImport/dict-auto-create/dictCreate.js').then(func => func.default(viteEnv.VITE_APP_API_URL))


    // 打包分析工具
    if (isBuild) vitePlugins.push(visualizer({
        // 输出文件名 默认:stats.html
        filename: 'buildStats.html',
        // 生成的图表类型 支持:"sunburst"、"treemap"、"network"、"raw-data"、"list" 和 "flamegraph"。默认值为 "treemap"
        template: 'treemap',
        // 是否在生成文件后自动打开浏览器查看
        open: true,
        // 是否计算 gzipped 文件的大小。默认值为 false
        gzipSize: true,
        // 是否计算 brotli 压缩后文件的大小。默认值为 false
        brotliSize: true,
    }))


    // 二次压缩
    // vitePlugins.push(zip({
    //     // 是否在控制台输出压缩结果
    //     verbose: true,
    //     // 触发压缩的文件大小阈值，以字节为单位
    //     threshold: 10240,//10kb
    //     // 是否关闭压缩
    //     disable: true,
    //     /**
    //      * - **gzip**：兼容性好，压缩率良好，速度较快。
    //      * - **brotliCompress**：压缩率最高，兼容性较好（现代浏览器），速度一般。
    //      * - **deflate**：兼容性好，压缩率一般，速度较快。
    //      * - **deflateRaw**：用于特殊场景，通常不用于常规的HTTP压缩。
    //      */
    //     algorithm: 'gzip',
    //     // gzip的配置项
    //     compressionOptions: {
    //         // 压缩级别，范围1-9，级别越高压缩率越高但越慢
    //         level: 9
    //     },
    //     // 生成的压缩包后缀名
    //     ext: '.gz',
    //     // 压缩后删除源文件
    //     deleteOriginFile: true,
    // }))

    return vitePlugins
}
